package com.ym.medical.service;


import com.ym.medical.domain.bo.msg.MpTemplateParam;
import com.ym.medical.domain.bo.msg.TemplateParam;
import com.ym.medical.enums.PlaformSourceEnum;
import com.ym.medical.enums.WxMsgTypeEnum;

import java.util.List;

/**
 * @Author: DaiKuangYin
 * @Date: 2020/1/14 11:37
 */
public interface IWxTemplateMsgSV {

    /**
     * 发送小程序订阅消息
     *
     * @param openId     发送人id
     * @param templateId 模板id
     * @param data       发送数据
     * @param page       跳转页面
     * @return
     */
    void sendMiniTemplateWxMsg(String openId, String templateId, List<TemplateParam> data, String page);

    /**
     * 发送公众号模板消息
     *
     * @param openId     发送人id
     * @param templateId 模板id
     * @param data       发送数据
     * @param page       跳转页面
     * @return
     */
    void sendMpTemplateWxMsg(String openId, String templateId, List<MpTemplateParam> data, String page);


    /**
     * 发送指定类型的消息
     * @param wxMsgTypeEnum
     * @param userId
     * @param params    根据指定类型传入参数
     */
    void sendWxMsgByType(WxMsgTypeEnum wxMsgTypeEnum, Long userId, String... params);

    /**
     * 发送医生回复消息
     * @param plaformSourceEnum
     * @param userId
     * @param page (0-医生姓名 1-问诊描述 2-医生正在查看你的病情 3-备注)
     */
    void sendReplyMsg(PlaformSourceEnum plaformSourceEnum, Long userId, String page, String... params);

    /**
     * 发送评价消息
     * @param plaformSourceEnum
     * @param userId
     * @param page  （0-医生姓名 1-问诊描述 2-患者信息 3-备注）
     */
    void sendEvaluateMsg(PlaformSourceEnum plaformSourceEnum, Long userId, String page, String... params);

    /**
     * 发送医生总结模板消息
     * @param plaformSourceEnum
     * @param userId
     * @param page
     * @param params（0-医生姓名 1-问诊描述 2-医生总结 3-备注）
     */
    void sendSummaryMsg(PlaformSourceEnum plaformSourceEnum, Long userId, String page, String... params);

    /**发送帖子消息
     * @param plaformSourceEnum
     * @param receiver
     * @param params  （0-标题 1-医生姓名 2-备注）
     */
    void sendTopicMsg(PlaformSourceEnum plaformSourceEnum, Long receiver,String page,  String... params);

    /**
     * 发送支付消息
     * @param plaformSourceEnum
     * @param receiver  （0-订单号 1-金额 2-交易时间）
     */
    void sendPayMsg(PlaformSourceEnum plaformSourceEnum, Long receiver, String... params);

    /**
     * 发送退费消息
     * @param plaformSourceEnum
     * @param userId
     * @param params （0-订单号 1-商品名称 2-价格 3-备注）
     */
    void sendRefundMsg(PlaformSourceEnum plaformSourceEnum, Long userId, String... params);

    /**
     * 发送电话预约
     * @param plaformSourceEnum
     * @param userId
     * @param page （0-患者姓名 1-预约时间 2-医生姓名 3-科室类型 4-医院名称 ）
     */
    void sendPhoneInquiryMsg(PlaformSourceEnum plaformSourceEnum, Long userId, String page, String... params);

    /**
     * 发送订单异常消息
     * @param plaformSourceEnum
     * @param userId
     * @param page  (0-医生姓名 1-预约时间 2-问诊描述 3-备注)
     */
    void sendOrderException(PlaformSourceEnum plaformSourceEnum, Long userId, String page, String... params);
}
